package com.ye.mapper;

import com.ye.pojo.SysUser;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;
import java.util.Map;

public interface SysUserMapper {

    /**
     * MyBatis框架动态SQL处理简单的多参数查询
     * if标签
     * 查询用户列表(分页查询)
     * @Param realName
     * @Param roleId
     * @return
     */
    public List<SysUser> selectList(@Param("realName") String realName,@Param("roleId") Integer roleId);

    /**
     * MyBatis框架动态SQL处理简单的多参数查询
     * where标签
     * 查询用户列表(分页查询)
     * @Param realName
     * @Param roleId
     * @return
     */
    public List<SysUser> selectList1(@Param("realName") String realName,@Param("roleId") Integer roleId);

    /**
     * MyBatis框架动态SQL处理简单的多参数查询
     * choose标签
     * 查询用户列表(分页查询)
     * @Param realName
     * @Param roleId
     * @return
     */
    public List<SysUser> selectListByChoose(@Param("realName") String realName,@Param("roleId") Integer roleId,@Param("account") String account,@Param("createdTime") Date createdTime);

    /**
     * MyBatis框架动态SQL处理简单的多参数查询
     * MyBatis框架动态SQL处理集合参数
     * foreach标签处理数组类型参数
     * 根据角色id数组,查询用户列表信息
     * @param roleIds
     * @return
     */
    public List<SysUser> getUserByRoleIdArray(Integer[] roleIds);

    /**
     * MyBatis框架动态SQL处理简单的多参数查询
     * MyBatis框架动态SQL处理集合参数
     * foreach标签处理List类型参数
     * 根据角色id集合,查询用户列表信息
     * @param roleList
     * @return
     */
    public List<SysUser> getUserByRoleIdList(List<Integer> roleList);

    /**
     * MyBatis框架动态SQL处理简单的多参数查询
     * MyBatis框架动态SQL处理集合参数
     * foreach标签处理Map类型参数
     * 根据角色ID集合(集合存在Map中) 查询用户列表信息
     * @param roleMap
     * @return
     */
    public List<SysUser> getUserByRoleIdMap(Map<String,Object> roleMap);


    /**
     * MyBatis框架动态SQL处理更新能力
     * set+if 标签
     */
    public int update(SysUser sysUser);


    /**
     * MyBatis框架的分页功能
     * 分页查询用户列表
     * @param realName
     * @param roleId
     * @param pageBegin
     * @param pageSize
     * @return
     */
    public List<SysUser> selectPageList(@Param("realName") String realName,@Param("roleId") Integer roleId,@Param("pageBegin") Integer pageBegin,@Param("pageSize") Integer pageSize);



}
